.TH std::strstreambuf::str 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::strstreambuf::str \- std::strstreambuf::str

.SH Synopsis
   char* str();  (deprecated in C++98)
                 (removed in C++26)

   Calls freeze(), then returns a copy of start pointer of the get area,
   std::streambuf::eback().

   The start of the get area, for all writeable std::strstreambuf objects constructed
   through the interface provided by std::strstream, is also the start of the put area.

.SH Parameters

   \fI(none)\fP

.SH Return value

   A copy of eback(), which may be a null pointer.

.SH Notes

   This function is typically called through the std::strstream interface.

   The call to freeze() guarantees that the returned pointer remains valid until the
   next explicit call to freeze(false): otherwise (on a dynamic buffer) any output
   operation could trigger buffer reallocation which would invalidate the pointer. It
   also causes a memory leak in the destructor of std::strstreambuf, unless
   freeze(false) is called before the buffer (or, more commonly, the std::strstream
   that manages it) is destroyed.

.SH Example


// Run this code

 #include <iostream>
 #include <strstream>

 int main()
 {
     std::strstream dyn; // dynamically-allocated read/write buffer
     dyn << "Test: " << 1.23 << std::ends;
     std::strstreambuf* buf = dyn.rdbuf();
     std::cout << "R/W buffer holds [" << buf->str() // or dyn.str()
               << "]\\n";
     dyn.freeze(false); // after calling .str() on a dynamic strstream

     char arr[10];
     std::ostrstream user(arr, 10); // fixed-size write-only buffer
     buf = user.rdbuf();
     user << 1.23 << std::ends;
     std::cout << "Write-only buffer holds [" << buf->str() // or user.str()
               << "]\\n";

     std::istrstream lit("1 2 3"); // fixed-size read-only buffer
     buf = lit.rdbuf();
     std::cout << "Read-only buffer holds [" << buf->str() // or lit.str()
               << "]\\n";
 }

.SH Output:

 R/W buffer holds [Test: 1.23]
 Write-only buffer holds [1.23]
 Read-only buffer holds [1 2 31 2 3]

.SH See also

   str accesses the output buffer
       \fI(public member function of std::strstream)\fP
   str accesses the output buffer
       \fI(public member function of std::ostrstream)\fP
   str accesses the output buffer
       \fI(public member function of std::istrstream)\fP
